package Hash;
//有效的字母异位词

import java.util.HashMap;
import java.util.Map;

public class valid_anagram {
    /*给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的
        字母异位词
    示例 1:
    输入: s = "anagram", t = "nagaram"
    输出: true*/
    public static boolean isAnagram(String s, String t) {
        //这里我利用map来存储咯
        HashMap<Character,Integer> map=new HashMap();
        for (int i = 0; i < s.length(); i++) {
            System.out.println(map.get(s.charAt(i)));
            int num=map.get(s.charAt(i))==null?0:map.get(s.charAt(i));
            num++;
            map.put(s.charAt(i),num);
        }
        //上面得到了对应的map集合了
        for (int i = 0; i < t.length(); i++) {
            int num=map.get(t.charAt(i))==null?0:map.get(t.charAt(i));
            num--;
            map.put(t.charAt(i),num);
        }
        //现在这里去看看是否有剩下,如果此时map有东西且不等于0的话，就证明不是
        for (Map.Entry<Character, Integer> entry : map.entrySet()) {
            if(entry.getValue()!=0){
                return false;
            }
        }
        return true;
    }

    //数组做法：简单的记录出现的次数
    public static boolean isAnagramArr(String s, String t) {
        int record[]=new int[26];
        for (int i = 0; i < s.length(); i++) {
            // 这里是自增操作 相对于 a[0]++、a++
            record[s.charAt(i)-'a']++;
        }
        for (int i = 0; i < t.length(); i++) {
            record[t.charAt(i)-'a']--;
        }
        for (int count : record) {
            if(count!=0){
                return false;
            }
        }
        return true;
    }


        public  static void main(String[] args) {
        isAnagram("anagram","nagaram");
    }
}
